#include <stdio.h>
//冒泡算法
int main() {
    int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
    int tmp,isSorted;
    int length = sizeof(nums)/ sizeof(int);
    //优化算法：最多进行 n-1 轮比较
    for(int i=0;i<length-1;i++) {
        isSorted = 1;  //假设剩下的元素已经排序好了
        printf("i=%d ",i);
        for(int j=0;j<length-1-i;j++){
            printf("j=%d ",j);
            if(nums[j] > nums[j+1]) {
                tmp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = tmp;
                isSorted = 0;  //一旦需要交换数组元素，就说明剩下的元素没有排序好
            }
        }
        printf("\n");
        if(isSorted) break; //如果没有发生交换，说明剩下的元素已经排序好了
    }
    
    for(int i=0;i<length-1;i++){
        printf("%d ",nums[i]);
    }
    printf("\n");
    return 0;
}